package com.hippo.javacore.javaiostream.iostream;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * @ClassName FileOutputStreamOpt
 * @Description TODO 文件字符输出流操作
 * @Author tangxl
 * @create 2023-04-06 15:47
 **/
public class FileOutputStreamOpt {
    public static void main(String[] args) throws IOException {
        // TODO 文件字符输出流操作
        // 1.文件字节输出流：写入单个字节
        // 2.文件字节输出流：写入字节数组
        // 3.文件字节输出流：写入字节数组的一部分

        // 1.文件字节输出流：写入单个字节
        // 1.1 创建FileOutputStream对象，构造方法中绑定要写入数据的目的地
        // 覆盖写入
        OutputStream os1 = new FileOutputStream("study-commons/java-file-iostream/src/main/resources/file/b1.txt");
        // 追加写入
        OutputStream os2 = new FileOutputStream("study-commons/java-file-iostream/src/main/resources/file/b2.txt", true);
        // 1.2 每次写入一个字节
        os1.write(97);// 97对应的字符是a
        os1.write('b');// b
        os1.write('小'); // 汉字小两个字节，每次写入一个字节，会乱码
        // 1.3 写入字节数组
        byte[] bytes = "我是中国人".getBytes();
        os2.write(bytes);// 写入字节数组
        os2.write("\r\n".getBytes());// 写入换行，所有操作系统都支持的换行符`\r\n`
        os2.write(bytes,0, bytes.length);// 从0开始写入，写入bytes.length个字节
        os2.write("\r\n".getBytes());// 写入换行
        // 1.3 释放资源
        os1.close();
    }
}
